#include "interationboard.hpp"
#include "myLog4.h"

void monitorBoardSend(ThreadSafeQueue<std::string>& client2ServerQueue, 
                  TCPClient &client) 
{
    /**
    * @brief 作为接口与开发板交互，包括监听数据与发送数据
    * @param client2ServerQueue 本机需要发送的数据  
    * @return None
    */

    while (true) {
        // 处理发送到板子的消息
        if (!client2ServerQueue.empty()) {
            std::string dataToSend;
            dataToSend = client2ServerQueue.pop();  // 从发送队列中取出要发送的数据

            // 通过 TCP 客户端发送数据
            client.SendData(dataToSend);
            LOG_INFO("[log4]" << "数据发送至开发板:" << dataToSend);
        }
        // 为了避免占用太多 CPU 资源，可以让线程稍微休眠一段时间
        std::this_thread::sleep_for(std::chrono::milliseconds(100));
    }
}

void monitorBoardReceive(ThreadSafeQueue<std::string>& server2ClientQueue, 
                  TCPClient &client) 
{
    /**
    * @brief 监听来自板子的数据
    * @param server2ClientQueue 来自板子的数据暂存
    * @return None
    */

    while (true) {
        // 接收来自板子的消息
        client.ReceiveData();  // 从板子（服务器）接收数据
    }
}